<?php
namespace king;

/**
 * Created by PhpStorm.
 * User: seanwang
 * Date: 2017/11/19
 * Time: 上午10:53
 */
class strings
{
    /***
     * @param $str
     */
    //打印时间和数据
    public static  function print_c( $str ){
        if( is_array($str) ) {
            echo date('Y-m-d H:i:s' , time() ) ."\n" ;
            print_r( $str ) ;
            echo "\n" ;
        } else{
            echo date('Y-m-d H:i:s' , time() ) .$str  . "\n" ;
        }
    }



    //随机输出字符串
    /***
     * @param $len //想要输出的字符串长度$len>0
     * @return string
     */
    public static function getRandstr($len){
        //字符串池子
        $lexicon = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
        //判断参数的正确性
        if(!is_numeric($len) || $len < 0  || $len == 0){
            return '';
        }
        $data = '';

        for ($i = 0 ; $i < $len; $i++){
            //mt_rand 比 rand方法快4倍
            $len_sum = mt_rand(0,strlen($lexicon));
            $data = $data.$lexicon[$len_sum];
        }

        return $data;
    }



    //断点测试
    /***
     * @param $data
     */
    public static function dump($data){
        var_dump($data);die;
    }


    //字符串分割成数组,取随机值
    /***
     * @param $str
     * @param string $type
     * @return array
     */
    public static function getStrVue($str,$type = ','){
        $data = explode($type,$str);
        if(!$data){
            return '';
        }
        $count = count($data);

        return ($count>1)?$data[mt_rand(0,$count-1)]:$data[0];
    }


    /***
     * @param $str
     * @param $start //从那位开始截取 负数则从右边开始截取
     * @param $end //截取几位 负数则为总长度 与这负数到和
     * @return string
     */
    public static function kingSubstr($str,$start,$end){

        if((!is_string($str)  && !is_numeric($str))|| empty($str) || !is_numeric($start) || !is_numeric($end)){
            return '';
        }

        $data = mb_substr($str,$start,$end,"utf-8");
        return $data;
    }


    //统计字符串中出现次数最多的字符
    //strstr — 查找字符串的首次出现
    //stristr strstr不区分大小写的版本
    //strpos -查找字符串首次出现的位置
    //string substr ( string $string , int $start [, int $length ] )
    //string strrchr ( string $haystack , mixed $needle )
    //strripos -计算指定字符串在目标字符串中最后一次出现的位置（不区分大小写）
    //stripos -查找字符串首次出现的位置（不区分大小定）
    //strrpos -计算指定字符串在目标字符串中最后一次出现的位置
    public static function getSumStr($str,$limit){

        if(1>0){
            //注意php_ini 中是否开启了php_mbstring.dll 扩展 才会有mb_substr方法
            return mb_substr("php中文字符encode",0,4,"utf-8");
        }
        //判断是否含有中文
        if (preg_match("/[\x7f-\xff]/", $str)) {
            //判断是否全是中文
            if(!eregi("[^\x80-\xff]","$str")){
                $arr = self::mbStrSplit($str);
                $arr=array_count_values($arr);
                arsort($arr);
            }else{
               $arr = [];
            }
        }else{
            $arr=str_split($str);
            $arr=array_count_values($arr);
            arsort($arr);
        }

        return $arr;
    }

    public  static function mb_str_split($str,$split_length=1,$charset="UTF-8"){
        if(func_num_args()==1){
            return preg_split('/(?<!^)(?!$)/u', $str);
        }
        if($split_length<1)return false;
        $len = mb_strlen($str, $charset);
        $arr = array();
        for($i=0;$i<$len;$i+=$split_length){
            $s = mb_substr($str, $i, $split_length, $charset);
            $arr[] = $s;
        }
        return $arr;
    }


     public static function mbStrSplit ($string, $len=1) {
        $start = 0;
        $strlen = mb_strlen($string);
        $array = [];
        while ($strlen) {
            $array[] = mb_substr($string,$start,$len,"utf8");
            $string = mb_substr($string, $len, $strlen,"utf8");
            $strlen = mb_strlen($string);
        }
        return $array;
    }



}

